// package-lock.json
//锁定-所有第三方库的版本号

// 引入模块方法是（nodejs自带的模块化语法--commonjs规范）
// let _ = require("lodash");

// import _ from "lodash";

// let resArr = _.uniq([1, 2, 3, 1, 1, 3, 5]);
// console.log(resArr);

// 引入express
const express = require("express");
// 调用 express函数-可以创建一个服务器（后端程序）对象
const app = express();

// ***解析前端的请求体-json解析
app.use(express.json());

// 后端的端口号
const port = 3000;

// 监听（外部--前端的请求）请求这个服务器的哪个地址
// 监听服务器上
// ----请求方式 get请求
// ----请求地址（领）  / 根地址
// ----请求参数---
app.get("/", (req, res) => {
  console.log(
    "这个监听请求的，回调函数-只要有前端发起了 get请求，请求/地址，这个函数就会执行"
  );
  res.send("Hello World!");
});

// http://192.168.12.46:3000/login?username=zhangsan&password=123
app.get("/login", (req, res) => {
  console.log(
    "这个监听请求的，回调函数-只要有前端发起了 get请求，请求/login地址，这个函数就会执行"
  );

  //req前端发起请求的对象（保存前的传递的数据）
  //res后端创建的响应对象（后端处理这个对象，可以给前端返回数据）
  //**获取get请求的搜索参数
  console.log(req.query); //{ username: 'zhangsan', password: '123' }
  let usenrame = req.query.username;
  let password = req.query.password;
  if (usenrame == "admin" && password == "admin") {
    res.json({ code: 1, message: "登录成功" });
  } else {
    res.json({ code: 0, message: "登录失败" });
  }
  //返回数据给前端
  //   res.send("login!");
});

/* 
    post接口
*/
app.post("/todos", (req, res) => {
  // **获取请求body的参数

  /* 
    一个处理逻辑--操作数据-数据库增删改查
  */
  console.log(req.body, "body");
  //   { title: '定制的金属肥皂', completed: true }
  let { title, completed } = req.body;
  console.log(title, completed);
  res.json({ code: 1, message: "发布成功" });
});

/* 
    put/patch

    url中写个动态id  /todos/:id  
    请求体--中传入title 

*/

app.patch("/todos/:id", (req, res) => {
  //获取url中动态id
  console.log(req.params.id);
  //获取了请求体参数
  console.log(req.body.title);
  res.json({
    code: 1,
    message: "修改成功",
  });
});
// app.put

/* 
    删除接口
*/
app.delete("/todos/:id", (req, res) => {
  console.log(req.params.id);
  res.json({
    code: 1,
    message: "删除成功",
  });
});

/* 
    用户相关接口 - 增删改查

    ai：提示词：仿照index.js文件中/todos的增删改查，编写一个用户的增删改查接口
*/

// 获取所有用户 - GET请求
app.get("/users", (req, res) => {
  console.log("获取所有用户列表");
  // 这里应该从数据库获取所有用户数据
  res.json({
    code: 1,
    message: "获取用户列表成功",
    data: [], // 实际应该返回用户数据
  });
});

// 获取特定用户 - GET请求
app.get("/users/:id", (req, res) => {
  console.log("获取用户ID:", req.params.id);
  // 这里应该从数据库根据ID获取用户数据
  res.json({
    code: 1,
    message: "获取用户信息成功",
    data: {
      id: req.params.id,
      // 其他用户信息
    },
  });
});

// 创建新用户 - POST请求
app.post("/users", (req, res) => {
  console.log("创建新用户:", req.body);
  // 获取请求体中的用户信息
  let { username, email, password } = req.body;
  console.log("用户名:", username, "邮箱:", email);

  // 这里应该进行数据验证和保存到数据库
  res.json({
    code: 1,
    message: "用户创建成功",
    data: {
      id: Date.now(), // 临时ID，实际应该由数据库生成
      username,
      email,
    },
  });
});

// 修改用户信息 - PATCH请求
app.patch("/users/:id", (req, res) => {
  console.log("修改用户ID:", req.params.id);
  console.log("修改内容:", req.body);

  // 获取要修改的用户信息
  let { username, email } = req.body;

  // 这里应该根据ID在数据库中更新用户信息
  res.json({
    code: 1,
    message: "用户信息修改成功",
    data: {
      id: req.params.id,
      username,
      email,
    },
  });
});

// 删除用户 - DELETE请求
app.delete("/users/:id", (req, res) => {
  console.log("删除用户ID:", req.params.id);

  // 这里应该从数据库中删除对应ID的用户
  res.json({
    code: 1,
    message: "用户删除成功",
  });
});

// 启动服务器-监听了3000端口
app.listen(port, () => {
  console.log(`Example app listening on port ${port}`);
});

// 本地的3000端口就是 这个后端程序（服务器）的接口地址
// http://localhost:3000
// http://127.0.0.1:3000 （自己电脑上有效）
// http://192.168.12.46:3000  (内网-局域网内有效)
